package com.ccc.excel.pojo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 资产导入数据（资产基础信息+资产使用信息+资产价值信息）
 *
 * @author superC
 * @version 1.0.0
 * @date 2023/7/18
 */
@Data
public class AssetImportData implements Serializable {

    private static final long serialVersionUID = 8059437276000722051L;

    /**
     * B 资产编码
     */
    @Size(max = 30, message = "固定资产编号长度不能超过30个字符")
    @Excel(name = "固定资产编号")
    private String assetCode;

    /**
     * B 单据日期（录入资产日期）
     */
    @Excel(name = "单据日期")
    private String enterDate;

    /**
     * B 资产名称
     */
    @Size(max = 100, message = "资产名称长度不能超过100个字符")
    @Excel(name = "资产名称")
    private String name;

    /**
     * 资产分类（存储财务导过来的数据，直接存名称）
     */
    @Excel(name = "资产分类")
    private String assetClassify;

    /**
     * U 资产用途（申请用途）
     */
    @Excel(name = "资产用途")
    private String usingTo;

    /**
     * B 资产类别
     */
    @Size(max = 100, message = "资产分类长度不能超过100个字符")
    @Excel(name = "资产类别")
    private String category;

    /**
     * U 使用部门
     */
    @Excel(name = "使用部门")
    private String usingDepart;

    /**
     * U 使用人（责任人）（CCC 甲方提供数据暂无该值）
     */
    @Excel(name = "使用人")
    private String responsiblerNick;

    /**
     * B 管理部门（实物管理部门）
     */
    @Excel(name = "管理部门")
    private String mdepart;

    /**
     * B 管理人（CCC 甲方提供数据暂无该值）
     */
    @Excel(name = "管理人")
    private String mdepartNick;

    /**
     * 项目（CCC 暂未分配该值）
     */
    @Excel(name = "项目")
    private String project;

    /**
     * B 客商（供应商）
     */
    @Excel(name = "客商")
    private String provider;

    /**
     * B 品牌
     */
    @Excel(name = "品牌")
    private String brand;

    /**
     * B 规格型号
     */
    @Excel(name = "规格型号")
    private String specifications;

    /**
     * B 取得方式（资产来源）
     */
    @Excel(name = "取得方式")
    private String assetSource;

    /**
     * U 开始使用日期
     */
    @Excel(name = "开始使用日期")
    private String usingDate;

    /**
     * U 使用地点
     */
    @Excel(name = "使用地点")
    private String usingLocation;

    /**
     * U 使用情况 {需要在using表创建}
     */
    @Excel(name = "使用情况")
    private String usage;

    /**
     * B 数量
     */
    @Excel(name = "数量")
    private Integer quantity;

    /**
     * B 计量单位
     */
    @Excel(name = "计量单位")
    private String unit;

    /**
     * B 单价
     */
    @Excel(name = "单价")
    private BigDecimal price;

    /**
     * 产品种类（CCC 暂未分配该值）
     */
    @Excel(name = "产品种类")
    private String productCategory;

    /**
     * 机动车登记号（CCC 暂未分配该值）
     */
    @Excel(name = "机动车登记号")
    private String carCas;

    /**
     * 车牌号（CCC 暂未分配该值）
     */
    @Excel(name = "车牌号")
    private String carNumber;

    /**
     * 车架号（CCC 暂未分配该值）
     */
    @Excel(name = "车架号")
    private String carVin;

    /**
     * 源资产编号
     */
    @Excel(name = "源资产编号")
    private String orgAssetCode;

    /**
     * V 入账类型
     */
    @Excel(name = "入账类型")
    private String creditingType;

    /**
     * V 入账日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "入账日期")
    private Date creditingDate;

    /**
     * V 凭证号
     */
    @Excel(name = "凭证号")
    private String voucherNumber;

    /**
     * V 使用月限
     */
    @Excel(name = "使用月限")
    private Integer months;

    /**
     * V 已使用月数
     */
    @Excel(name = "已使用月数")
    private Integer usingMonth;

    /**
     * V 已折旧月数
     */
    @Excel(name = "已折旧月数")
    private Integer depreciationMonth;

    /**
     * V 历史原值 （CCC 暂未分配该值）
     */
    @Excel(name = "历史原值")
    private BigDecimal hiValue;

    /**
     * V 评估增减值 （CCC 暂未分配该值）
     */
    @Excel(name = "评估增减值")
    private BigDecimal evaluationValue;

    /**
     * V 原值
     */
    @Excel(name = "原值")
    private BigDecimal originalValue;

    /**
     * V 账面价值
     */
    @Excel(name = "账面价值")
    private BigDecimal bookValue;

    /**
     * V 累计折旧 （CCC 暂未分配该值）
     */
    @Excel(name = "累计折旧")
    private BigDecimal totalDepreciation;

    /**
     * V 减值准备金额
     */
    @Excel(name = "减值准备")
    private BigDecimal provisionValue;

    /**
     * V 残值
     */
    @Excel(name = "残值")
    private BigDecimal salvageValue;

    /**
     * V 净值
     */
    @Excel(name = "净值")
    private BigDecimal netValue;

    /**
     * V 本月折旧额
     */
    @Excel(name = "本月折旧额")
    private BigDecimal monthDepreciation;

    /**
     * V 折旧方法
     */
    @Excel(name = "折旧方法")
    private String oldType;

    /**
     * V 折旧状态
     */
    @Excel(name = "折旧状态")
    private String oldStatus;

    /**
     * V 备注
     */
    @Excel(name = "备注")
    private String remark;


    /*甲方未提供数据项 */

    /**
     * 保养周期（计量单位）（CCC 甲方未提供数据项）
     */
    @Excel(name = "保养周期")
    private String maintainPeriod;

    /**
     * 存放地点(仓库地点)CCC 甲方未提供数据项
     */
    @Excel(name = "存放地点")
    private String location;

}
